var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime");
var cache = {}; //用来缓存文件对象

//404
function send404(response) {
   response.writeHead(404,{'Content-Type':'text/plain'});
    response.write("Error 404 :resource not found.");
    response.end();
}
//提供文件数据服务，
function sendFile(response, filePath, fileContents) {
    response.writeHead(
        200, { "content-type":mime.lookup(path.basename(filePath)) });
    response.end(fileContents);
}
//提供静态文件服务
function severStatic(response,cache,absPath){
	//检测是否存在缓存里面
	if(cache[absPath]){
		sendFile(response,absPath,cache[absPath]);
	}
	else{
		//检测是否存在文件
		fs.exists(absPath,function(exists){
			if(exists) {
				fs.readFile(absPath,function(err,data){
					if(err){
						send404(response);
					}
					else{
						cache[absPath]=data;
						sendFile(response,absPath,data);
					}
				})
			}
			else{
				send404(response);//发送404响应
			}

		})

	}
}
//创建HTTP服务器
var server=http.createServer(function(request,response){
	var filePath=false;
	if(request.url=="/"){
		filePath="public/index.html";
	}
	else{
		filePath="public"+request.url;
	}
	var absPath="./"+filePath;
	severStatic(response,cache,absPath);  //返回静态文件
})
//启动HTTP服务器
server.listen(3000,function(){
	console.log("服务器开启了，啦啦啦啦")
})



//设置SocketIO服务器
var chatServer=require("./lib/chat_server");
chatServer.listen(server);